package com.pig4cloud.pigx.user.enums;

import com.pig4cloud.pigx.user.constant.RedisMessageType;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 用户模块枚举
 *
 */
public enum UserEnums {
	;
	/**
	 * 用户等级(0 普通用户 1 一级节点 2 二级节点 3 三级节点 4 超级节点)
	 */
	@Getter
	@AllArgsConstructor
	public enum Level {
		/**
		 * 0 普通用户
		 */
		LEVEL_0("普通用户", 0),
		/**
		 * 1 社区
		 */
		LEVEL_1("社区", 1),
		/**
		 * 2 合伙人
		 */
		LEVEL_2("合伙人", 2);

		private final String name;
		private final Integer value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return java.lang.String
		 * @author gong_da_kai
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static Integer findValue(String name) {
			for (Level item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @author gong_da_kai
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findName(Integer value) {
			for (Level item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}

	/**
	 * 链
	 */
	@Getter
	@AllArgsConstructor
	public enum Chain {
		/**
		 * 以太坊
		 */
		ETH("以太坊", "ETH"),
		/**
		 * 以太坊
		 */
		BSC("币安", "BSC"),
		/**
		 * 波场
		 */
		TRON("波场", "TRON"),
		/**
		 * USC
		 */
		USC("USC", "USC");

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return java.lang.String
		 * @author gong_da_kai
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findValue(String name) {
			for (Chain item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @author gong_da_kai
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findName(String value) {
			for (Chain item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}

	/**
	 * 链
	 */
	@Getter
	@AllArgsConstructor
	public enum EmailType {
		/**
		 * 用户注册
		 */
		Customer_Registration("用户注册", "0", RedisMessageType.Customer_Registration),
		/**
		 * 用户修改邮箱
		 */
		Customer_Modify_Email("用户修改邮箱", "1", RedisMessageType.Customer_Modify_Email),
		/**
		 * 用户修改密码
		 */
		Customer_Modify_MONEY_PASSWORD("用户修改密码", "2", RedisMessageType.Customer_Modify_MONEY_PASSWORD),
		/**
		 * 用户邮箱登录
		 */
		Email_Login("用户邮箱登录", "3", RedisMessageType.Email_Login),
		/**
		 * 提现申请
		 */
		Withdrawal_Request("提现申请", "4", RedisMessageType.Withdrawal_Request),
		/**
		 * 用户修改地址
		 */
		Customer_Modify_Address("用户修改地址", "5", RedisMessageType.Customer_Modify_Address);

		private final String name;
		private final String value;
		private final String type;

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return java.lang.String
		 * @author gong_da_kai
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findType(String value) {
			for (EmailType item : values()) {
				if (item.getValue().equals(value)) {
					return item.getType();
				}
			}
			return null;
		}
	}
}
